移远EC200T 4G模组的使用


1. 环境搭建

  1. 准备移远官方文档以及内核相应改动代码

  2. sstar 开发包


2. 修改kernel

将移远的kernel相应改动加到相应目录,需要区分对应内核版本,对应改动参考文件请咨询模组厂商。 (目前使用内核版本为4.9.84,可以选择相近的版本4.9.111或者4.9.51)


3. 三种联网方式

EC200T支持PPP拨号,ECM以及RNDIS三种联网方式。


3.1. PPP拨号

  1. 下载开源工具: PPP

    wget https://download.samba.org/pub/ppp/ppp-2.4.8.tar.gz

  2. 解压并编译

    1. tar -xvf ppp-2.4.8.tar.gz

    2. 最新版的pppd默认使用openssl库,需要改为内置libcrpto, 修改 pppd/Makefile.linux, 将 #USE_CRYPT=y 改为 USE_CRYPT=y

    3. 使用静态编译, 修改pppd/Makefile.linux, 修改COPTS = -O2 -pipe -Wall -g → COPTS = -O2 -pipe -Wall -g --static

      ./configure
      
      make CC=arm-linux-gnueabihf-gcc
      

      如果遇到无法找到crypt的库,请点击此处下载静态库

  3. 将生成的程序拷贝到rootfs的对应目录

    cp ppp-2.4.8/chat/chat  $(ROOTFS)/usr/sbin
    cp ppp-2.4.8/pppd/pppd  $(ROOTFS)/usr/sbin
    cp ppp-2.4.8/pppddump/pppddumo $(ROOTFS)/usr/sbin
    cp ppp-2.4.8/pppstats/pppstats $(ROOTFS)/usr/sbin
    
  4. 创建配置文件

    mkdir $(ROOTFS)/etc/ppp/ $(ROOTFS)/etc/ppp/peers
    
    cp ppp-2.4.8/etc.ppp/pap-secrets $(ROOTFS)/etc/ppp
    cp ppp-2.4.8/etc.ppp/chap-secrets $(ROOTFS)/etc/ppp
    
    touch $(ROOTFS)/etc/ppp/peers/gprs
    touch $(ROOTFS)/etc/ppp/gprs-connect-chat
    touch $(ROOTFS)/etc/ppp/ip-up
    touch $(ROOTFS)/etc/ppp/ip-down
    

    /etc/ppp/peers/gprs文件

    # /etc/ppp/peers/gprs
    
    # Usage: root>pppd call gprs
    # Interface should be used is the interface which connects physics interface of SIM7100C Module
    
    # ttyname 串口端口,若非以”/“开头,则会自动补充”/dev/
    /dev/ttyUSB1
    
    # speed 串口波特率
    115200
    
    #硬件流控
    crtscts
    
    # 调制解调器模式
    modem
    
    # 无需身份验证
    noauth
    
    # 不要求使用chap授权
    refuse-chap
    
    # 不要求使用mschap授权
    refuse-mschap
    
    # 不要求使用mschap-v2授权
    refuse-mschap-v2
    
    # 调试模式 pppd将以可读形式记录发送或接收的所有控制数据包的内容
    debug
    
    # 前台运行
    nodetach
    
    #hide-password
    
    # ISP请求2个dns服务器地址。这两个地址将以DNS1与DNS2两个环境变量传送到/etc/ppp/ip-up脚本中,并且将环境变量USEPEERDNS置为1
    usepeerdns
    
    # 禁用本地ip,由ISP提供
    noipdefault
    
    # 添加ISP网关至路由表,作为默认路由
    defaultroute
    
    # 用户名
    user "cmnet"
    
    0.0.0.0:0.0.0.0
    
    #ipcp-accept-local
    #ipcp-accept-remote
    
    # 使能以下两个选项可以实现ppp掉线自动重播
    # lcp连接失败尝试次数
    lcp-echo-failure 6
    
    # lcp echo发送间隔
    lcp-echo-interval 10
    
    # 禁用压缩控制协议ccp
    #noccp
    
    # 禁用Van  Jacobson格式的tcp/ip报头
    #novj
    
    #novjccomp
    
    # 连接终止后不要退出,而是重新尝试连接,连接次数受到maxfail限制
    persist
    
    # 连接最大尝试次数,0无限制
    #maxfail
    
    # 启动ppp协议前,进行硬件拨号
    connect '/usr/sbin/chat -s -v -f /etc/ppp/gprs-connect-chat'
    

    /etc/ppp/gprs-connect-chat

    # 设置响应超时                 
    TIMEOUT 15
    
    # 若接收到“DELAYED”、“BUSY”、“ERROR”、“NO DIALTONE”、“NO CARRIER”,则退出脚本
    ABORT "DELAYED"                
    ABORT "BUSY"
    ABORT "ERROR"
    ABORT "NO DIALTONE"            
    ABORT "NO CARRIER"
    
    # 无期望,直接发送AT字符串
    '' AT
    
    # 以下内容可以根据自己模块提供的AT命令手册查询含义
    OK ATS0=0
    OK ATE0V1
    
    # 设置APN,移动、联通、电信各不相同,见文末表格
    OK AT+CGDCONT=1,"IP","CMNET"   
    # 拨号开启GPRS服务,号码移动、联通、电信各不相同,见文末表格
    OK ATD*99***1#
    
    #期望收到CONNECT
    CONNECT ''
    

    /etc/ppp/ip-up文件

    #!/bin/sh
    #ip-up
    dns_file="/etc/resolv.conf"
    
    if [ -f $dns_file ];then
        rm "$dns_file"
    fi
    ln /etc/ppp/resolv.conf "$dns_file"
    

    /etc/ppp/ip-down文件

    #!/bin/sh
    #ip-down
    #set -vx
    dns_file="/etc/resolv.conf"
    
    rm $dns_file
    
    cat > "$dns_file" <<EOF
    # auto create by ip-down
    nameserver 114.114.114.114
    nameserver 8.8.8.8
    EOF
    
    chmod 755 "$dns_file"
    
    /etc/init.d/networking restart
    
    echo "Set dns for eth0"
    
  5. 内核配置 开启usb串口驱动

    CONFIG_USB_SERIAL
    CONFIG_USB_SERIAL_OPTION
    
    Device Drivers -->
    USB support  -->
        USB Serial Converter support  -->
            USB driver for GSM and CDMA modems -->
    

    开启PPP驱动

    CONFIG_PPP
    
    Device Drivers  --> 
    Network device support -->
        PPP (point-to-point protocol) support
    
  6. PPP 拨号

    1. 配置好环境之后,将EC200T板子连接至Takoyaki开发板

    2. 长按EC200T PWRKEY按键启动模组, 此时Takoyaki /dev/目录会生成ttyUSB0 ttyUSB1 ttyUSB2节点

    3. 使用指令 pppd call gprs 使用ping www.baidu.com 看是否联通外网


3.2. ECM/RNDIS

  1. 内核配置

    开启usb串口驱动

    CONFIG_USB_SERIAL
    CONFIG_USB_SERIAL_OPTION
    
    Device Drivers -->
    USB support  -->
        USB Serial Converter support-->
                USB driver for GSM and CDMA modems -->
    

    开启ECM/RNDIS驱动

    1. CONFIG_USB_NET_DRIVERS
    Device Drivers -->
    Network device support -->
        USB Network Adapters -->
    
    2. CONFIG_USB_USBNET
    Device Drivers -->
    Network device support -->
        USB Network Adapters -->
            Multi-purpose USB Networking Framework -->
    
    3. CONFIG_USB_NET_RNDIS_HOST
    Device Drivers -->
    Network device support -->
        USB Network Adapters -->
            Multi-purpose USB Networking Framework -->
                Host for RNDIS and ActiveSync devices -->
    
  2. EC200T模式配置 AT Command ,具体含义参考文件请咨询模组厂商

    1. 使用 AT+QICSGP 配置 APN/用户名/密码/APN 认证

    2. 如果模块使用 2G/3G 网络, 使用 AT+QIACT=1 来启动 PDP

    3. 使用 AT+QNETDEVCTL=1,1,1 建立数据连接

    4. 使用dhcp工具配置dns以及ip地址

    模式配置用例

    ## 4. microcom /dev/ttyUSB
    AT+QCFG="usbnet",1
    OK
    at+cpin?
    +CPIN: READY
    OK
    at+csq
    +CSQ: 31,99
    OK
    at+qicsgp=1,1,"cmnet"
    OK
    at+cops?
    +COPS: 0,0,"CHINA MOBILE",7
    OK
    at+qnetdevctl=1,1,1
    OK
    

    dns与ip配置命令

    udhcpc -i usb0 -s /etc/init.d/udhcpc.script